<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500&display=swap"
          rel="stylesheet" />
    <style>
        body {
            background: #f5f8fa;
            font-family: 'Ubuntu', sans-serif;
            font-weight: 400;
            line-height: 1.25em;
            margin: 0;
            font-size: 16px;
            color: #454b52;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }

        .login-page {
            width: 360px;
            padding: 8% 0 0;
            margin: auto;
        }

        .form {
            position: relative;
            z-index: 1;
            background: #FFFFFF;
            max-width: 360px;
            margin: 0 auto 100px;
            padding: 45px;
            text-align: center;
            box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.2), 0 5px 5px 0 rgba(0, 0, 0, 0.24);
        }

        .form input {
            font-family: inherit;
            outline: 0;
            background: #f2f2f2;
            width: 100%;
            border: 0;
            margin: 0 0 15px;
            padding: 15px;
            box-sizing: border-box;
            font-size: 14px;
        }

        .form button {
            font-family: inherit;
            text-transform: uppercase;
            outline: 0;
            background: hsl(217, 22%, 24%);
            width: 100%;
            border: 0;
            padding: 15px;
            color: #FFFFFF;
            font-size: 14px;
            -webkit-transition: all 0.3 ease;
            transition: all 0.3 ease;
            cursor: pointer;
        }

        .form button:hover, .form button:active, .form button:focus {
            background: hsl(217, 22%, 28%);
        }

        .form .message {
            margin: 15px 0 0;
            color: #b3b3b3;
            font-size: 12px;
        }

        .form .message a {
            color: hsl(217, 22%, 24%);
            text-decoration: none;
        }

        .container {
            position: relative;
            z-index: 1;
            max-width: 300px;
            margin: 0 auto;
        }

        .container:before, .container:after {
            content: "";
            display: block;
            clear: both;
        }

        .container .info {
            margin: 50px auto;
            text-align: center;
        }

        .container .info h1 {
            margin: 0 0 15px;
            padding: 0;
            font-size: 36px;
            font-weight: 300;
            color: #1a1a1a;
        }

        .container .info span {
            color: #4d4d4d;
            font-size: 12px;
        }

        .container .info span a {
            color: #000000;
            text-decoration: none;
        }

        .container .info span .fa {
            color: #EF3B3A;
        }

        #error-message {
            display: none;
            color: #EF3B3A;
            margin-bottom: 0.5rem;
        }
    </style>
    <title>Bull-Board</title>
</head>
<body>
<div class="login-page">
    <div class="form">
        <div id="error-message">Invalid username or password.</div>
        <form class="login-form" id="loginForm" method="post" action="/cookie/login"
              onsubmit="return handleSubmit(this)">
            <input type="text" name="username" placeholder="Username" />
            <input type="password" name="password" placeholder="Password" />
            <button>Login</button>

            <p class="message">Username: user1, Password: boardboard</p>
            or
            <p class="message">Username: user2, Password: boardboard</p>
        </form>
    </div>
</div>

<script>
  function handleSubmit(form) {
    const url = form.action;
    const method = form.method;
    const username = form.username.value;
    const password = form.password.value;
    const errorMessage = document.getElementById('error-message')
    if (!username || !password) {
      return false;
    }

    errorMessage.style.display = 'none';

    fetch(url, {
      method: method.toUpperCase(),
      headers: { 'content-type': 'application/json' },
      body: JSON.stringify({ username, password })
    }).then((res) =>
      res.status !== 200 ? Promise.reject(res.json()) : res.json()
    )
      .then(res => res.error ? Promise.reject(res.error) : res)
      .then(({ url }) => {
        window.location = url
      })
      .catch(() => {
        errorMessage.style.display = 'block'
      })

    return false
  }
</script>
</body>
</html>
